import { Constructor } from "../ECSWorld";
import { ECSComponent } from "./ECSComponent"

export interface ECSComponentSet {
    /**
     * 返回组件总数
     */
     size(): number;

     /**
      * 查询特定名字的所有组件
      *
      * @param constructor
      */
     all<T extends ECSComponent>(constructor: Constructor<T>): T[];
 
     /**
      * 查询特定名字的第一个组件
      *
      * @param constructor
      */
     get<T extends ECSComponent>(constructor: Constructor<T>): T;
 
     /**
      * 添加组件
      *
      * @param component
      */
     add(component: ECSComponent): void;
 
     /**
      * 移除组件
      *
      * @param component
      */
     delete(component: ECSComponent): void;
}